
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int mod = 998244353;

int dp[1 << 22]; // dp[s],当串是s状态的时候，有多少种删除方案

void solve() {
  int n;
  string t;
  cin >> n >> t;

  dp[(1 << n) - 1] = 1; // 一个字符都还没删除的情况
  for (int s = (1 << n) - 1; s >= 0; s--) {
    char pre = 0; // 保证不是小写英文字母 ASCII 即可，表示上一个未被删除的字符
    for (int i = 0; i < n; i++) 
    // 如果 i 这个字符还存在
      if (s >> i & 1) {
        if (t[i] == pre)
          continue;

        // 与上一个字符不同，说明是新的一段连续字符的第一个位置，可以删除
        int nxt = s ^ (1 << i); // 计算删除 2^i 位后的下个状态
        dp[nxt] = (dp[nxt] + dp[s]) % mod;
        pre = t[i];
      }
  }
  cout << dp[0];
}